package com.anlogic.sdk.ui.tests.uc2.projectcreate;

import static org.junit.Assert.*;

import java.io.File;
import java.util.Iterator;

import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot;
import org.eclipse.swtbot.eclipse.finder.waits.Conditions;
import org.eclipse.swtbot.swt.finder.utils.SWTBotPreferences;
import org.eclipse.swtbot.swt.finder.waits.DefaultCondition;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

import com.anlogic.sdk.env.utils.EnvCheckUtils;
import com.anlogic.sdk.ui.tests.utils.WorkspaceUtils;

import com.anlogic.sdk.utils.EnvUtils;
import com.anlogic.sdk.utils.UIUtils;
import com.anlogic.sdk.workspace.FDWorkspace;

public class UC2_TC0011_Test {

	private static SWTWorkbenchBot bot;

	@BeforeClass
	public static void setUpBeforeClass() throws Exception {

		bot = new SWTWorkbenchBot();
		SWTBotPreferences.TIMEOUT = 10000;
		SWTBotPreferences.KEYBOARD_LAYOUT = "EN_US";
		bot.waitUntil(Conditions.shellIsActive("data - FutureDynasty"), 90 * 1000);
		 SWTBotPreferences.PLAYBACK_DELAY = 10;

	}

	@Before
	public void setUp() throws Exception {
		WorkspaceUtils.resetworkbench(bot);
	}

	@AfterClass
	public static void tearDownAfterClass() throws Exception {

	}

	@After
	public void tearDown() throws Exception {

		WorkspaceUtils.cleanWorkspace();
	}

	@Test
	public void Test() throws Exception {
		  bot.waitUntil(Conditions.shellIsActive("data - FutureDynasty"), 60 * 1000);

		    bot.waitUntil(new DefaultCondition() {
		        @Override
		        public boolean test() throws Exception {
		            return bot.menu("File").menu("New").menu("Project...").isEnabled();
		        }

		        @Override
		        public String getFailureMessage() {
		            return "Menu 'Project...' is not available or not enabled.";
		        }
		    }, 60 * 1000);

		    bot.menu("File").menu("New").menu("Project...").click();
		    bot.waitUntil(Conditions.shellIsActive("New Project"), 10 * 1000);

		    SWTBotTree tree = bot.tree();


		    SWTBotTreeItem cppNode = tree.getTreeItem("C/C++");
		    cppNode.select();
		    cppNode.doubleClick();

		 
		    cppNode.getNode("C/C++ Project").select();
		    cppNode.getNode("C/C++ Project").doubleClick();

		    // 等待 "Executable > RISCV C Project (Softcore)" 出现

		    bot.table().select(0);
		    bot.button("Next >").click();
		    SWTBotTreeItem exeNode = bot.tree().getTreeItem("Executable");
		 
		    exeNode.getNode("RISCV C Project (Softcore)").select();

		    bot.textWithLabel("&Project name:").setText("softcore");

		    bot.button("Next >").click();
		    try {
		    bot.comboBox(0).setSelection("aa");
		    }catch (Exception e) {
		    	e.printStackTrace();
				assertTrue(false);
				
			}
		   
		    bot.button("Next >").click();
		    bot.button("Finish").click();

		    bot.viewByTitle("Project Explorer").show();
		    bot.waitUntil(new DefaultCondition() {
		        @Override
		        public boolean test() throws Exception {
		            return ((SWTWorkbenchBot) bot).viewByTitle("Project Explorer").bot().tree().getAllItems().length > 0;
		        }

		        @Override
		        public String getFailureMessage() {
		            return "Project tree did not load.";
		        }
		    }, 20 * 1000);
	}
	
}
